#ifndef BARCHARTWIDGET_H
#define BARCHARTWIDGET_H

#include <QWidget>
#include <QVector>
#include <QString>
#include <QColor>

class BarChartWidget : public QWidget
{
    Q_OBJECT

public:
    explicit BarChartWidget(QWidget *parent = nullptr);

    // 设置报警等级数据
    void setAlarmData(const QVector<int> &alarmCounts);

    // 获取当前报警数据
    QVector<int> getAlarmData() const;

    // 设置报警等级名称
    void setAlarmLevelNames(const QVector<QString> &names);

    // 设置柱状图颜色
    void setBarColors(const QVector<QColor> &colors);

    // 设置标题
    void setTitle(const QString &title);

    // 设置是否显示数值
    void setShowValues(bool show);

    // 清除所有数据
    void clearData();

protected:
    void paintEvent(QPaintEvent *event) override;
    QSize sizeHint() const override;
    QSize minimumSizeHint() const override;

private:
    void drawBars(QPainter &painter);
    void drawAxes(QPainter &painter);
    void drawLabels(QPainter &painter);
    void drawTitle(QPainter &painter);
    int getMaxValue() const;

    QVector<int> m_alarmCounts;
    QVector<QString> m_levelNames;
    QVector<QColor> m_barColors;
    QString m_title;
    bool m_showValues;

    // 布局参数
    int m_leftMargin;
    int m_rightMargin;
    int m_topMargin;
    int m_bottomMargin;
    int m_barSpacing;
    int m_barWidth;
};

#endif // BARCHARTWIDGET_H
